/**
 * @(#)FlowNode.java, 十二月 15, 2024.
 * <p>
 * Copyright 2024 memberclub.com. All rights reserved.
 * memberclub.COM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.example.design.flow.node;

/**
 * 抽象类，定义了流程节点的基本结构，包括process、success、rollback和callback方法。具体的流程节点需要继承这个类并实现process方法，其他方法可选
 */
public abstract class FlowNode<T> {

    /**
     * 执行当前节点任务
     * @param t
     */
    public abstract void process(T t);

    /**
     * 任务成功的处理
     * @param t
     */
    public void success(T t) {
    }

    /**
     * 回滚上一个任务
     * @param t
     * @param e
     */
    public void rollback(T t, Exception e) {
    }

    public void callback(T t, Exception e) {
    }
}